package JZ_Offer.dataStructure.tree;

import base.TreeNode;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

/**
 * 从上往下打印二叉树
 * <p>
 * 不分行从上往下打印出二叉树的每个节点，同层节点从左至右打印。
 * 例如输入{8,6,10,#,#,2,1}，则依次打印8,6,10,2,1(空节点不打印，跳过)，
 * 请你将打印的结果存放到一个数组里面，返回。
 *
 * @Author piper
 * @Date 2019/12/19 2:43 下午
 */
public class JZ32_从上往下打印二叉树 {

    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        if (root == null) {
            return arrayList;
        }

        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);

        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();
            arrayList.add(node.val);
            if (node.left != null) {
                queue.add(node.left);
            }
            if (node.right != null) {
                queue.add(node.right);
            }
        }

        return arrayList;
    }
}
